package com.zcxy360.sandtable.domain;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class UnitProblemExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public UnitProblemExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andCourseIdIsNull() {
            addCriterion("unit_problem.course_id is null");
            return (Criteria) this;
        }

        public Criteria andCourseIdIsNotNull() {
            addCriterion("unit_problem.course_id is not null");
            return (Criteria) this;
        }

        public Criteria andCourseIdEqualTo(Integer value) {
            addCriterion("unit_problem.course_id =", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdNotEqualTo(Integer value) {
            addCriterion("unit_problem.course_id <>", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdGreaterThan(Integer value) {
            addCriterion("unit_problem.course_id >", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.course_id >=", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdLessThan(Integer value) {
            addCriterion("unit_problem.course_id <", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdLessThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.course_id <=", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdIn(List<Integer> values) {
            addCriterion("unit_problem.course_id in", values, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdNotIn(List<Integer> values) {
            addCriterion("unit_problem.course_id not in", values, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.course_id between", value1, value2, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdNotBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.course_id not between", value1, value2, "courseId");
            return (Criteria) this;
        }

        public Criteria andUserIdIsNull() {
            addCriterion("unit_problem.user_id is null");
            return (Criteria) this;
        }

        public Criteria andUserIdIsNotNull() {
            addCriterion("unit_problem.user_id is not null");
            return (Criteria) this;
        }

        public Criteria andUserIdEqualTo(Integer value) {
            addCriterion("unit_problem.user_id =", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdNotEqualTo(Integer value) {
            addCriterion("unit_problem.user_id <>", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdGreaterThan(Integer value) {
            addCriterion("unit_problem.user_id >", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.user_id >=", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdLessThan(Integer value) {
            addCriterion("unit_problem.user_id <", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdLessThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.user_id <=", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdIn(List<Integer> values) {
            addCriterion("unit_problem.user_id in", values, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdNotIn(List<Integer> values) {
            addCriterion("unit_problem.user_id not in", values, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.user_id between", value1, value2, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.user_id not between", value1, value2, "userId");
            return (Criteria) this;
        }

        public Criteria andUnitIdIsNull() {
            addCriterion("unit_problem.unit_id is null");
            return (Criteria) this;
        }

        public Criteria andUnitIdIsNotNull() {
            addCriterion("unit_problem.unit_id is not null");
            return (Criteria) this;
        }

        public Criteria andUnitIdEqualTo(Integer value) {
            addCriterion("unit_problem.unit_id =", value, "unitId");
            return (Criteria) this;
        }

        public Criteria andUnitIdNotEqualTo(Integer value) {
            addCriterion("unit_problem.unit_id <>", value, "unitId");
            return (Criteria) this;
        }

        public Criteria andUnitIdGreaterThan(Integer value) {
            addCriterion("unit_problem.unit_id >", value, "unitId");
            return (Criteria) this;
        }

        public Criteria andUnitIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.unit_id >=", value, "unitId");
            return (Criteria) this;
        }

        public Criteria andUnitIdLessThan(Integer value) {
            addCriterion("unit_problem.unit_id <", value, "unitId");
            return (Criteria) this;
        }

        public Criteria andUnitIdLessThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.unit_id <=", value, "unitId");
            return (Criteria) this;
        }

        public Criteria andUnitIdIn(List<Integer> values) {
            addCriterion("unit_problem.unit_id in", values, "unitId");
            return (Criteria) this;
        }

        public Criteria andUnitIdNotIn(List<Integer> values) {
            addCriterion("unit_problem.unit_id not in", values, "unitId");
            return (Criteria) this;
        }

        public Criteria andUnitIdBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.unit_id between", value1, value2, "unitId");
            return (Criteria) this;
        }

        public Criteria andUnitIdNotBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.unit_id not between", value1, value2, "unitId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdIsNull() {
            addCriterion("unit_problem.vproblem_id is null");
            return (Criteria) this;
        }

        public Criteria andVproblemIdIsNotNull() {
            addCriterion("unit_problem.vproblem_id is not null");
            return (Criteria) this;
        }

        public Criteria andVproblemIdEqualTo(Integer value) {
            addCriterion("unit_problem.vproblem_id =", value, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdNotEqualTo(Integer value) {
            addCriterion("unit_problem.vproblem_id <>", value, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdGreaterThan(Integer value) {
            addCriterion("unit_problem.vproblem_id >", value, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.vproblem_id >=", value, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdLessThan(Integer value) {
            addCriterion("unit_problem.vproblem_id <", value, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdLessThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.vproblem_id <=", value, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdIn(List<Integer> values) {
            addCriterion("unit_problem.vproblem_id in", values, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdNotIn(List<Integer> values) {
            addCriterion("unit_problem.vproblem_id not in", values, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.vproblem_id between", value1, value2, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andVproblemIdNotBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.vproblem_id not between", value1, value2, "vproblemId");
            return (Criteria) this;
        }

        public Criteria andAnswerIsNull() {
            addCriterion("unit_problem.answer is null");
            return (Criteria) this;
        }

        public Criteria andAnswerIsNotNull() {
            addCriterion("unit_problem.answer is not null");
            return (Criteria) this;
        }

        public Criteria andAnswerEqualTo(String value) {
            addCriterion("unit_problem.answer =", value, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerNotEqualTo(String value) {
            addCriterion("unit_problem.answer <>", value, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerGreaterThan(String value) {
            addCriterion("unit_problem.answer >", value, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerGreaterThanOrEqualTo(String value) {
            addCriterion("unit_problem.answer >=", value, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerLessThan(String value) {
            addCriterion("unit_problem.answer <", value, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerLessThanOrEqualTo(String value) {
            addCriterion("unit_problem.answer <=", value, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerLike(String value) {
            addCriterion("unit_problem.answer like", value, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerNotLike(String value) {
            addCriterion("unit_problem.answer not like", value, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerIn(List<String> values) {
            addCriterion("unit_problem.answer in", values, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerNotIn(List<String> values) {
            addCriterion("unit_problem.answer not in", values, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerBetween(String value1, String value2) {
            addCriterion("unit_problem.answer between", value1, value2, "answer");
            return (Criteria) this;
        }

        public Criteria andAnswerNotBetween(String value1, String value2) {
            addCriterion("unit_problem.answer not between", value1, value2, "answer");
            return (Criteria) this;
        }

        public Criteria andProblemScoreIsNull() {
            addCriterion("unit_problem.problem_score is null");
            return (Criteria) this;
        }

        public Criteria andProblemScoreIsNotNull() {
            addCriterion("unit_problem.problem_score is not null");
            return (Criteria) this;
        }

        public Criteria andProblemScoreEqualTo(Integer value) {
            addCriterion("unit_problem.problem_score =", value, "problemScore");
            return (Criteria) this;
        }

        public Criteria andProblemScoreNotEqualTo(Integer value) {
            addCriterion("unit_problem.problem_score <>", value, "problemScore");
            return (Criteria) this;
        }

        public Criteria andProblemScoreGreaterThan(Integer value) {
            addCriterion("unit_problem.problem_score >", value, "problemScore");
            return (Criteria) this;
        }

        public Criteria andProblemScoreGreaterThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.problem_score >=", value, "problemScore");
            return (Criteria) this;
        }

        public Criteria andProblemScoreLessThan(Integer value) {
            addCriterion("unit_problem.problem_score <", value, "problemScore");
            return (Criteria) this;
        }

        public Criteria andProblemScoreLessThanOrEqualTo(Integer value) {
            addCriterion("unit_problem.problem_score <=", value, "problemScore");
            return (Criteria) this;
        }

        public Criteria andProblemScoreIn(List<Integer> values) {
            addCriterion("unit_problem.problem_score in", values, "problemScore");
            return (Criteria) this;
        }

        public Criteria andProblemScoreNotIn(List<Integer> values) {
            addCriterion("unit_problem.problem_score not in", values, "problemScore");
            return (Criteria) this;
        }

        public Criteria andProblemScoreBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.problem_score between", value1, value2, "problemScore");
            return (Criteria) this;
        }

        public Criteria andProblemScoreNotBetween(Integer value1, Integer value2) {
            addCriterion("unit_problem.problem_score not between", value1, value2, "problemScore");
            return (Criteria) this;
        }

        public Criteria andRemarkIsNull() {
            addCriterion("unit_problem.remark is null");
            return (Criteria) this;
        }

        public Criteria andRemarkIsNotNull() {
            addCriterion("unit_problem.remark is not null");
            return (Criteria) this;
        }

        public Criteria andRemarkEqualTo(String value) {
            addCriterion("unit_problem.remark =", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkNotEqualTo(String value) {
            addCriterion("unit_problem.remark <>", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkGreaterThan(String value) {
            addCriterion("unit_problem.remark >", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkGreaterThanOrEqualTo(String value) {
            addCriterion("unit_problem.remark >=", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkLessThan(String value) {
            addCriterion("unit_problem.remark <", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkLessThanOrEqualTo(String value) {
            addCriterion("unit_problem.remark <=", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkLike(String value) {
            addCriterion("unit_problem.remark like", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkNotLike(String value) {
            addCriterion("unit_problem.remark not like", value, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkIn(List<String> values) {
            addCriterion("unit_problem.remark in", values, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkNotIn(List<String> values) {
            addCriterion("unit_problem.remark not in", values, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkBetween(String value1, String value2) {
            addCriterion("unit_problem.remark between", value1, value2, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkNotBetween(String value1, String value2) {
            addCriterion("unit_problem.remark not between", value1, value2, "remark");
            return (Criteria) this;
        }

        public Criteria andIsMarkIsNull() {
            addCriterion("unit_problem.is_mark is null");
            return (Criteria) this;
        }

        public Criteria andIsMarkIsNotNull() {
            addCriterion("unit_problem.is_mark is not null");
            return (Criteria) this;
        }

        public Criteria andIsMarkEqualTo(Boolean value) {
            addCriterion("unit_problem.is_mark =", value, "isMark");
            return (Criteria) this;
        }

        public Criteria andIsMarkNotEqualTo(Boolean value) {
            addCriterion("unit_problem.is_mark <>", value, "isMark");
            return (Criteria) this;
        }

        public Criteria andIsMarkGreaterThan(Boolean value) {
            addCriterion("unit_problem.is_mark >", value, "isMark");
            return (Criteria) this;
        }

        public Criteria andIsMarkGreaterThanOrEqualTo(Boolean value) {
            addCriterion("unit_problem.is_mark >=", value, "isMark");
            return (Criteria) this;
        }

        public Criteria andIsMarkLessThan(Boolean value) {
            addCriterion("unit_problem.is_mark <", value, "isMark");
            return (Criteria) this;
        }

        public Criteria andIsMarkLessThanOrEqualTo(Boolean value) {
            addCriterion("unit_problem.is_mark <=", value, "isMark");
            return (Criteria) this;
        }

        public Criteria andIsMarkIn(List<Boolean> values) {
            addCriterion("unit_problem.is_mark in", values, "isMark");
            return (Criteria) this;
        }

        public Criteria andIsMarkNotIn(List<Boolean> values) {
            addCriterion("unit_problem.is_mark not in", values, "isMark");
            return (Criteria) this;
        }

        public Criteria andIsMarkBetween(Boolean value1, Boolean value2) {
            addCriterion("unit_problem.is_mark between", value1, value2, "isMark");
            return (Criteria) this;
        }

        public Criteria andIsMarkNotBetween(Boolean value1, Boolean value2) {
            addCriterion("unit_problem.is_mark not between", value1, value2, "isMark");
            return (Criteria) this;
        }

        public Criteria andMarkTimeIsNull() {
            addCriterion("unit_problem.mark_time is null");
            return (Criteria) this;
        }

        public Criteria andMarkTimeIsNotNull() {
            addCriterion("unit_problem.mark_time is not null");
            return (Criteria) this;
        }

        public Criteria andMarkTimeEqualTo(Date value) {
            addCriterion("unit_problem.mark_time =", value, "markTime");
            return (Criteria) this;
        }

        public Criteria andMarkTimeNotEqualTo(Date value) {
            addCriterion("unit_problem.mark_time <>", value, "markTime");
            return (Criteria) this;
        }

        public Criteria andMarkTimeGreaterThan(Date value) {
            addCriterion("unit_problem.mark_time >", value, "markTime");
            return (Criteria) this;
        }

        public Criteria andMarkTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("unit_problem.mark_time >=", value, "markTime");
            return (Criteria) this;
        }

        public Criteria andMarkTimeLessThan(Date value) {
            addCriterion("unit_problem.mark_time <", value, "markTime");
            return (Criteria) this;
        }

        public Criteria andMarkTimeLessThanOrEqualTo(Date value) {
            addCriterion("unit_problem.mark_time <=", value, "markTime");
            return (Criteria) this;
        }

        public Criteria andMarkTimeIn(List<Date> values) {
            addCriterion("unit_problem.mark_time in", values, "markTime");
            return (Criteria) this;
        }

        public Criteria andMarkTimeNotIn(List<Date> values) {
            addCriterion("unit_problem.mark_time not in", values, "markTime");
            return (Criteria) this;
        }

        public Criteria andMarkTimeBetween(Date value1, Date value2) {
            addCriterion("unit_problem.mark_time between", value1, value2, "markTime");
            return (Criteria) this;
        }

        public Criteria andMarkTimeNotBetween(Date value1, Date value2) {
            addCriterion("unit_problem.mark_time not between", value1, value2, "markTime");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}